# TiDB Configuration.

# TiDB server host.
host = "0.0.0.0"

# tidb server advertise IP.
advertise-address = ""

# TiDB server port.
port = 4000

# Registered store name, [tikv, mocktikv]
store = "mocktikv"

# TiDB storage path.
path = "/tmp/tidb"

# The socket file to use for connection.
socket = ""

# Run ddl worker on this tidb-server.
run-ddl = true

# Schema lease duration, very dangerous to change only if you know what you do.
lease = {{ .Values.tidb.lease | default "45s" | quote }}

# When create table, split a separated region for it. It is recommended to
# turn off this option if there will be a large number of tables created.
split-table = true

# The limit of concurrent executed sessions.
token-limit = {{ .Values.tidb.tokenLimit | default "1000" | atoi }}

# Only print a log when out of memory quota.
# Valid options: ["log", "cancel"]
oom-action = "log"

# Set the memory quota for a query in bytes. Default: 32GB
mem-quota-query = {{ .Values.tidb.memQuotaQuery | default "34359738368" | atoi }}

# Enable coprocessor streaming.
enable-streaming = false

# Enable batch commit for the DMLs.
enable-batch-dml = {{ .Values.tidb.enableBatchDml | default false }}

# Set system variable 'lower_case_table_names'
lower-case-table-names = 2

# Make "kill query" behavior compatible with MySQL. It's not recommend to
# turn on this option when TiDB server is behind a proxy.
compatible-kill-query = false

# check mb4 value in utf8 is used to control whether to check the mb4 characters when the charset is utf8.
check-mb4-value-in-utf8 = {{ .Values.tidb.checkMb4ValueInUtf8 | default true }}

# treat-old-version-utf8-as-utf8mb4 use for upgrade compatibility. Set to true will treat old version table/column UTF8 charset as UTF8MB4.
treat-old-version-utf8-as-utf8mb4 = {{ .Values.tidb.treatOldVersionUtf8AsUtf8mb4 | default true }}

[log]
# Log level: debug, info, warn, error, fatal.
level = {{ .Values.tidb.logLevel | default "info" | quote }}

# Log format, one of json, text, console.
format = "text"

# Disable automatic timestamp in output
disable-timestamp = false

# Stores slow query log into separated files.
slow-query-file = ""

# Queries with execution time greater than this value will be logged. (Milliseconds)
slow-threshold = 300

# Queries with internal result greater than this value will be logged.
expensive-threshold = 10000

# Maximum query length recorded in log.
query-log-max-len = 2048

# File logging.
[log.file]
# Log file name.
filename = ""

# Max log file size in MB (upper limit to 4096MB).
max-size = 300

# Max log file keep days. No clean up by default.
max-days = 0

# Maximum number of old log files to retain. No clean up by default.
max-backups = 0

# Rotate log by day
log-rotate = true

[security]
# Path of file that contains list of trusted SSL CAs for connection with mysql client.
ssl-ca = ""

# Path of file that contains X509 certificate in PEM format for connection with mysql client.
ssl-cert = ""

# Path of file that contains X509 key in PEM format for connection with mysql client.
ssl-key = ""

# Path of file that contains list of trusted SSL CAs for connection with cluster components.
cluster-ssl-ca = ""

# Path of file that contains X509 certificate in PEM format for connection with cluster components.
cluster-ssl-cert = ""

# Path of file that contains X509 key in PEM format for connection with cluster components.
cluster-ssl-key = ""

[status]
# If enable status report HTTP service.
report-status = true

# TiDB status port.
status-port = 10080

# Prometheus pushgateway address, leaves it empty will disable prometheus push.
metrics-addr = ""

# Prometheus client push interval in second, set \"0\" to disable prometheus push.
metrics-interval = 15

[performance]
# Max CPUs to use, 0 use number of CPUs in the machine.
max-procs = {{ .Values.tidb.maxProcs | default 0 }}
# StmtCountLimit limits the max count of statement inside a transaction.
stmt-count-limit = 5000

# Set keep alive option for tcp connection.
tcp-keep-alive = true

# Whether support cartesian product.
cross-join = true

# Stats lease duration, which influences the time of analyze and stats load.
stats-lease = "3s"

# Run auto analyze worker on this tidb-server.
run-auto-analyze = true

# Probability to use the query feedback to update stats, 0 or 1 for always false/true.
feedback-probability = 0.05

# The max number of query feedback that cache in memory.
query-feedback-limit = 1024

# Pseudo stats will be used if the ratio between the modify count and
# row count in statistics of a table is greater than it.
pseudo-estimate-ratio = 0.8

# Force the priority of all statements in a specified priority.
# The value could be "NO_PRIORITY", "LOW_PRIORITY", "HIGH_PRIORITY" or "DELAYED".
force-priority = "NO_PRIORITY"

# The limitation of the number for the entries in one transaction.
# If using TiKV as the storage, the entry represents a key/value pair.
# WARNING: Do not set the value too large, otherwise it will make a very large impact on the TiKV cluster.
# Please adjust this configuration carefully.
txn-entry-count-limit = {{ .Values.tidb.txnEntryCountLimit | default "300000" | atoi }}

# The limitation of the size in byte for the entries in one transaction.
# If using TiKV as the storage, the entry represents a key/value pair.
# WARNING: Do not set the value too large, otherwise it will make a very large impact on the TiKV cluster.
# Please adjust this configuration carefully.
txn-total-size-limit = {{ .Values.tidb.txnTotalSizeLimit | default "104857600" | atoi }}

[proxy-protocol]
# PROXY protocol acceptable client networks.
# Empty string means disable PROXY protocol, * means all networks.
networks = ""

# PROXY protocol header read timeout, unit is second
header-timeout = 5

[prepared-plan-cache]
enabled = {{ .Values.tidb.preparedPlanCacheEnabled | default false }}
capacity = {{ .Values.tidb.preparedPlanCacheCapacity | default 100 }}

[opentracing]
# Enable opentracing.
enable = false

# Whether to enable the rpc metrics.
rpc-metrics = false

[opentracing.sampler]
# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
type = "const"

# Param is a value passed to the sampler.
# Valid values for Param field are:
# - for "const" sampler, 0 or 1 for always false/true respectively
# - for "probabilistic" sampler, a probability between 0 and 1
# - for "rateLimiting" sampler, the number of spans per second
# - for "remote" sampler, param is the same as for "probabilistic"
# and indicates the initial sampling rate before the actual one
# is received from the mothership
param = 1.0

# SamplingServerURL is the address of jaeger-agent's HTTP sampling server
sampling-server-url = ""

# MaxOperations is the maximum number of operations that the sampler
# will keep track of. If an operation is not tracked, a default probabilistic
# sampler will be used rather than the per operation specific sampler.
max-operations = 0

# SamplingRefreshInterval controls how often the remotely controlled sampler will poll
# jaeger-agent for the appropriate sampling strategy.
sampling-refresh-interval = 0

[opentracing.reporter]
# QueueSize controls how many spans the reporter can keep in memory before it starts dropping
# new spans. The queue is continuously drained by a background go-routine, as fast as spans
# can be sent out of process.
queue-size = 0

# BufferFlushInterval controls how often the buffer is force-flushed, even if it's not full.
# It is generally not useful, as it only matters for very low traffic services.
buffer-flush-interval = 0

# LogSpans, when true, enables LoggingReporter that runs in parallel with the main reporter
# and logs all submitted spans. Main Configuration.Logger must be initialized in the code
# for this option to have any effect.
log-spans = false

#  LocalAgentHostPort instructs reporter to send spans to jaeger-agent at this address
local-agent-host-port = ""

[tikv-client]
# Max gRPC connections that will be established with each tikv-server.
grpc-connection-count = 16

# After a duration of this time in seconds if the client doesn't see any activity it pings
# the server to see if the transport is still alive.
grpc-keepalive-time = 10

# After having pinged for keepalive check, the client waits for a duration of Timeout in seconds
# and if no activity is seen even after that the connection is closed.
grpc-keepalive-timeout = 3

# max time for commit command, must be twice bigger than raft election timeout.
commit-timeout = "41s"

[txn-local-latches]
# Enable local latches for transactions. Enable it when
# there are lots of conflicts between transactions.
enabled = {{ .Values.tidb.txnLocalLatchesEnabled | default false }}
capacity = {{ .Values.tidb.txnLocalLatchesCapacity | default "10240000" | atoi }}

[binlog]
# enable to write binlog.
enable = false

# WriteTimeout specifies how long it will wait for writing binlog to pump.
write-timeout = "15s"

# If IgnoreError is true, when writting binlog meets error, TiDB would stop writting binlog,
# but still provide service.
ignore-error = false

# use socket file to write binlog, for compatible with kafka version tidb-binlog.
binlog-socket = ""
